/**
 * @param {string} ransomNote
 * @param {string} magazine
 * @return {boolean}
 */
var canConstruct = function (ransomNote, magazine) {
  // 如果赎金信长度大于杂志长度，直接返回false
  if (ransomNote.length > magazine.length) return false;

  // 使用数组记录每个字符的出现次数（假设字符为小写字母）
  const charCount = new Array(26).fill(0);

  // 统计杂志中每个字符的出现次数
  for (const char of magazine) {
    charCount[char.charCodeAt(0) - 'a'.charCodeAt(0)]++;
  }

  // 检查赎金信中的字符是否都能在杂志中找到足够的次数
  for (const char of ransomNote) {
    const index = char.charCodeAt(0) - 'a'.charCodeAt(0);
    if (charCount[index] <= 0) {
      return false; // 字符不足
    }
    charCount[index]--; // 使用一个字符
  }

  return true; // 所有字符都足够
};